import pluginJs from '@eslint/js';
import pluginVue from 'eslint-plugin-vue';
import globals from 'globals';

export default [
  { files: ['**/*.{js,mjs,cjs,vue}'] },
  { languageOptions: { globals: globals.browser } },
  pluginJs.configs.recommended,
  ...pluginVue.configs['flat/vue2-essential'],
  {
    ignores: [
      'public',
      'dist',
      'unpackage',
      'example',
    ],
  },
  {
    languageOptions: {
      globals: {
        wx: 'writable',
        weex: 'writable',
        uni: 'writable',
        plus: 'writable',
        getApp: 'writable',
        getCurrentPages: 'writable',
        process: 'writable',
      },
    },
  },
  {
    rules: {
      // 不强制定义组件属性类型
      'vue/require-prop-types': 0,
      // 不强制定义组件属性默认值
      'vue/require-default-prop': 0,
      // 不强制标签必须写成对闭合标签
      'vue/html-self-closing': 0,
      // 禁用属性换行规则
      'vue/max-attributes-per-line': 0,
      // 属性排序规则
      'vue/attributes-order': 2,
      // 不强制在单行元素的内容前后使用换行符
      'vue/singleline-html-element-content-newline': 0,
      // 允许使用v-html,v-text
      'vue/no-v-html': 0,
      'vue/no-v-text-v-html-on-component': 0,
      // 允许vue组件名称为单个单词
      'vue/multi-word-component-names': 0,
      // 箭头函数参数只有一个时去掉括号
      'arrow-parens': [2, 'as-needed'],
      // 字符串使用单引号
      quotes: [2, 'single'],
      // 对象属性引号-不允许在非严格要求的对象字面量属性名称周围加上引号
      'quote-props': [2, 'as-needed'],
      // 强制分号结尾
      semi: [2, 'always'],
      // 不强制驼峰命名
      camelcase: 0,
      // 不强制使用全等
      eqeqeq: 0,
      // 函数名之前不能有空格
      'space-before-function-paren': [2, 'never'],
      // 允许变量声明未使用
      'no-unused-vars': 0,
      // 数组和对象键值对末了一个逗号，多行形式必需带逗号，单行形式不能带逗号
      'comma-dangle': [2, 'always-multiline'],
      // 逗号前后的空格
      'comma-spacing': [2, { before: false, after: true }],
      'comma-style': [2, 'last'],
      'no-console': 0,
      'no-useless-return': 0,
      'no-debugger': 0,
      'prefer-promise-reject-errors': 0,
      'standard/no-callback-literal': 0,
      'no-tabs': 0,
      'no-unused-expressions': 0,
      'no-mixed-operators': 0,
      'import/no-webpack-loader-syntax': 0,
      'no-useless-escape': 0,
    },
  },
];